#ifndef _Font_h
#define _Font_h

#include "CxxUtils.h"
#include "LangUtils.h"

class DoOpFont
{
public: 
	class ds_definefont : public _DoOperator
	{
	protected: 
		ds_definefont(const ds_definefont &);
		ds_definefont& operator=(const ds_definefont &);
	public: 
		ds_definefont() : _DoOperator() {
		}

		virtual void execute(DevilSemantic &semantic);
	};

	class ds_composefont : public _DoOperator
	{
	protected: 
		ds_composefont(const ds_composefont &);
		ds_composefont& operator=(const ds_composefont &);
	public: 
		ds_composefont() : _DoOperator() {
		}

		virtual void execute(DevilSemantic &semantic);
	};

	class ds_undefinefont : public _DoOperator
	{
	protected: 
		ds_undefinefont(const ds_undefinefont &);
		ds_undefinefont& operator=(const ds_undefinefont &);
	public: 
		ds_undefinefont() : _DoOperator() {
		}

		virtual void execute(DevilSemantic &semantic);
	};

	class ds_findfont : public _DoOperator
	{
	protected: 
		ds_findfont(const ds_findfont &);
		ds_findfont& operator=(const ds_findfont &);
	public: 
		ds_findfont() : _DoOperator() {
		}

		virtual void execute(DevilSemantic &semantic);
	};

	class ds_scalefont : public _DoOperator
	{
	protected: 
		ds_scalefont(const ds_scalefont &);
		ds_scalefont& operator=(const ds_scalefont &);
	public: 
		ds_scalefont() : _DoOperator() {
		}

		virtual void execute(DevilSemantic &semantic);
	};

	class ds_makefont : public _DoOperator
	{
	protected: 
		ds_makefont(const ds_makefont &);
		ds_makefont& operator=(const ds_makefont &);
	public: 
		ds_makefont() : _DoOperator() {
		}

		virtual void execute(DevilSemantic &semantic);
	};

	class ds_setfont : public _DoOperator
	{
	protected: 
		ds_setfont(const ds_setfont &);
		ds_setfont& operator=(const ds_setfont &);
	public: 
		ds_setfont() : _DoOperator() {
		}

		virtual void execute(DevilSemantic &semantic);
	};

	class ds_rootfont : public _DoOperator
	{
	protected: 
		ds_rootfont(const ds_rootfont &);
		ds_rootfont& operator=(const ds_rootfont &);
	public: 
		ds_rootfont() : _DoOperator() {
		}

		virtual void execute(DevilSemantic &semantic);
	};

	class ds_currentfont : public _DoOperator
	{
	protected: 
		ds_currentfont(const ds_currentfont &);
		ds_currentfont& operator=(const ds_currentfont &);
	public: 
		ds_currentfont() : _DoOperator() {
		}

		virtual void execute(DevilSemantic &semantic);
	};

	class ds_selectfont : public _DoOperator
	{
	protected: 
		ds_selectfont(const ds_selectfont &);
		ds_selectfont& operator=(const ds_selectfont &);
	public: 
		ds_selectfont() : _DoOperator() {
		}

		virtual void execute(DevilSemantic &semantic);
	};

	class ds_show : public _DoOperator
	{
	protected: 
		ds_show(const ds_show &);
		ds_show& operator=(const ds_show &);
	public: 
		ds_show() : _DoOperator() {
		}

		virtual void execute(DevilSemantic &semantic);
	};

	class ds_ashow : public _DoOperator
	{
	protected: 
		ds_ashow(const ds_ashow &);
		ds_ashow& operator=(const ds_ashow &);
	public: 
		ds_ashow() : _DoOperator() {
		}

		virtual void execute(DevilSemantic &semantic);
	};

	class ds_widthshow : public _DoOperator
	{
	protected: 
		ds_widthshow(const ds_widthshow &);
		ds_widthshow& operator=(const ds_widthshow &);
	public: 
		ds_widthshow() : _DoOperator() {
		}

		virtual void execute(DevilSemantic &semantic);
	};

	class ds_awidthshow : public _DoOperator
	{
	protected: 
		ds_awidthshow(const ds_awidthshow &);
		ds_awidthshow& operator=(const ds_awidthshow &);
	public: 
		ds_awidthshow() : _DoOperator() {
		}

		virtual void execute(DevilSemantic &semantic);
	};

	class ds_xshow : public _DoOperator
	{
	protected: 
		ds_xshow(const ds_xshow &);
		ds_xshow& operator=(const ds_xshow &);
	public: 
		ds_xshow() : _DoOperator() {
		}

		virtual void execute(DevilSemantic &semantic);
	};

	class ds_xyshow : public _DoOperator
	{
	protected: 
		ds_xyshow(const ds_xyshow &);
		ds_xyshow& operator=(const ds_xyshow &);
	public: 
		ds_xyshow() : _DoOperator() {
		}

		virtual void execute(DevilSemantic &semantic);
	};

	class ds_yshow : public _DoOperator
	{
	protected: 
		ds_yshow(const ds_yshow &);
		ds_yshow& operator=(const ds_yshow &);
	public: 
		ds_yshow() : _DoOperator() {
		}

		virtual void execute(DevilSemantic &semantic);
	};

	class ds_glyphshow : public _DoOperator
	{
	protected: 
		ds_glyphshow(const ds_glyphshow &);
		ds_glyphshow& operator=(const ds_glyphshow &);
	public: 
		ds_glyphshow() : _DoOperator() {
		}

		virtual void execute(DevilSemantic &semantic);
	};

	class ds_stringwidth : public _DoOperator
	{
	protected: 
		ds_stringwidth(const ds_stringwidth &);
		ds_stringwidth& operator=(const ds_stringwidth &);
	public: 
		ds_stringwidth() : _DoOperator() {
		}

		virtual void execute(DevilSemantic &semantic);
	};

	class ds_cshow : public _DoOperator
	{
	protected: 
		ds_cshow(const ds_cshow &);
		ds_cshow& operator=(const ds_cshow &);
	public: 
		ds_cshow() : _DoOperator() {
		}

		virtual void execute(DevilSemantic &semantic);
	};

	class ds_kshow : public _DoOperator
	{
	protected: 
		ds_kshow(const ds_kshow &);
		ds_kshow& operator=(const ds_kshow &);
	public: 
		ds_kshow() : _DoOperator() {
		}

		virtual void execute(DevilSemantic &semantic);
	};

	class ds_FontDirectory : public _DoOperator
	{
	protected: 
		ds_FontDirectory(const ds_FontDirectory &);
		ds_FontDirectory& operator=(const ds_FontDirectory &);
	public: 
		ds_FontDirectory() : _DoOperator() {
		}

		virtual void execute(DevilSemantic &semantic);
	};

	class ds_GlobalFontDirectory : public _DoOperator
	{
	protected: 
		ds_GlobalFontDirectory(const ds_GlobalFontDirectory &);
		ds_GlobalFontDirectory& operator=(const ds_GlobalFontDirectory &);
	public: 
		ds_GlobalFontDirectory() : _DoOperator() {
		}

		virtual void execute(DevilSemantic &semantic);
	};

	class ds_StandardEncoding : public _DoOperator
	{
	protected: 
		ds_StandardEncoding(const ds_StandardEncoding &);
		ds_StandardEncoding& operator=(const ds_StandardEncoding &);
	public: 
		ds_StandardEncoding() : _DoOperator() {
		}

		virtual void execute(DevilSemantic &semantic);
	};

	class ds_ISOLatin1Encoding : public _DoOperator
	{
	protected: 
		ds_ISOLatin1Encoding(const ds_ISOLatin1Encoding &);
		ds_ISOLatin1Encoding& operator=(const ds_ISOLatin1Encoding &);
	public: 
		ds_ISOLatin1Encoding() : _DoOperator() {
		}

		virtual void execute(DevilSemantic &semantic);
	};

	class ds_findencoding : public _DoOperator
	{
	protected: 
		ds_findencoding(const ds_findencoding &);
		ds_findencoding& operator=(const ds_findencoding &);
	public: 
		ds_findencoding() : _DoOperator() {
		}

		virtual void execute(DevilSemantic &semantic);
	};

	class ds_setcachedevice : public _DoOperator
	{
	protected: 
		ds_setcachedevice(const ds_setcachedevice &);
		ds_setcachedevice& operator=(const ds_setcachedevice &);
	public: 
		ds_setcachedevice() : _DoOperator() {
		}

		virtual void execute(DevilSemantic &semantic);
	};

	class ds_setcachedevice2 : public _DoOperator
	{
	protected: 
		ds_setcachedevice2(const ds_setcachedevice2 &);
		ds_setcachedevice2& operator=(const ds_setcachedevice2 &);
	public: 
		ds_setcachedevice2() : _DoOperator() {
		}

		virtual void execute(DevilSemantic &semantic);
	};

	class ds_setcharwidth : public _DoOperator
	{
	protected: 
		ds_setcharwidth(const ds_setcharwidth &);
		ds_setcharwidth& operator=(const ds_setcharwidth &);
	public: 
		ds_setcharwidth() : _DoOperator() {
		}

		virtual void execute(DevilSemantic &semantic);
	};

	static void push(_DoDictionaryMultimap& dict) {
		dict.put(CRefPtr< _DoObject >(new DoName("definefont")), CRefPtr< _DoObject >(new ds_definefont()));
		dict.put(CRefPtr< _DoObject >(new DoName("composefont")), CRefPtr< _DoObject >(new ds_composefont()));
		dict.put(CRefPtr< _DoObject >(new DoName("undefinefont")), CRefPtr< _DoObject >(new ds_undefinefont()));
		dict.put(CRefPtr< _DoObject >(new DoName("findfont")), CRefPtr< _DoObject >(new ds_findfont()));
		dict.put(CRefPtr< _DoObject >(new DoName("scalefont")), CRefPtr< _DoObject >(new ds_scalefont()));
		dict.put(CRefPtr< _DoObject >(new DoName("makefont")), CRefPtr< _DoObject >(new ds_makefont()));
		dict.put(CRefPtr< _DoObject >(new DoName("setfont")), CRefPtr< _DoObject >(new ds_setfont()));
		dict.put(CRefPtr< _DoObject >(new DoName("rootfont")), CRefPtr< _DoObject >(new ds_rootfont()));
		dict.put(CRefPtr< _DoObject >(new DoName("currentfont")), CRefPtr< _DoObject >(new ds_currentfont()));
		dict.put(CRefPtr< _DoObject >(new DoName("selectfont")), CRefPtr< _DoObject >(new ds_selectfont()));
		dict.put(CRefPtr< _DoObject >(new DoName("show")), CRefPtr< _DoObject >(new ds_show()));
		dict.put(CRefPtr< _DoObject >(new DoName("ashow")), CRefPtr< _DoObject >(new ds_ashow()));
		dict.put(CRefPtr< _DoObject >(new DoName("widthshow")), CRefPtr< _DoObject >(new ds_widthshow()));
		dict.put(CRefPtr< _DoObject >(new DoName("awidthshow")), CRefPtr< _DoObject >(new ds_awidthshow()));
		dict.put(CRefPtr< _DoObject >(new DoName("xshow")), CRefPtr< _DoObject >(new ds_xshow()));
		dict.put(CRefPtr< _DoObject >(new DoName("xyshow")), CRefPtr< _DoObject >(new ds_xyshow()));
		dict.put(CRefPtr< _DoObject >(new DoName("yshow")), CRefPtr< _DoObject >(new ds_yshow()));
		dict.put(CRefPtr< _DoObject >(new DoName("glyphshow")), CRefPtr< _DoObject >(new ds_glyphshow()));
		dict.put(CRefPtr< _DoObject >(new DoName("stringwidth")), CRefPtr< _DoObject >(new ds_stringwidth()));
		dict.put(CRefPtr< _DoObject >(new DoName("cshow")), CRefPtr< _DoObject >(new ds_cshow()));
		dict.put(CRefPtr< _DoObject >(new DoName("kshow")), CRefPtr< _DoObject >(new ds_kshow()));
		dict.put(CRefPtr< _DoObject >(new DoName("FontDirectory")), CRefPtr< _DoObject >(new ds_FontDirectory()));
		dict.put(CRefPtr< _DoObject >(new DoName("GlobalFontDirectory")), CRefPtr< _DoObject >(new ds_GlobalFontDirectory()));
		dict.put(CRefPtr< _DoObject >(new DoName("StandardEncoding")), CRefPtr< _DoObject >(new ds_StandardEncoding()));
		dict.put(CRefPtr< _DoObject >(new DoName("ISOLatin1Encoding")), CRefPtr< _DoObject >(new ds_ISOLatin1Encoding()));
		dict.put(CRefPtr< _DoObject >(new DoName("findencoding")), CRefPtr< _DoObject >(new ds_findencoding()));
		dict.put(CRefPtr< _DoObject >(new DoName("setcachedevice")), CRefPtr< _DoObject >(new ds_setcachedevice()));
		dict.put(CRefPtr< _DoObject >(new DoName("setcachedevice2")), CRefPtr< _DoObject >(new ds_setcachedevice2()));
		dict.put(CRefPtr< _DoObject >(new DoName("setcharwidth")), CRefPtr< _DoObject >(new ds_setcharwidth()));
	}
};

#endif
